Video post-production software, such as Adobe® After Effects®, can digitally stabilize video captured by a camera to reduce the movement of objects relative to frames. After stabilization, images of the video will often have motion blur due to, for example, sudden movements of the camera that occurred during capture of the video (e.g., by the user of a handheld camera). Motion blur can also occur when subjects move through frames faster than the exposure rate the camera can clearly capture. A neural network can be trained to remove blur from images, such as images with motion blur. The quality of the output images generated by the neural network depends upon how the neural network was trained and what data it receives to produce the output.
Typically, a neural network is trained by providing one image that the neural network uses to produce a corresponding output image. The output image is compared to a reference image to determine how to adjust the neural network. This approach to training limits the analysis by the neural network to the data contained in the input image, often resulting in low-quality output images. Furthermore, the effectiveness of training can depend on the quality of training images. Prior approaches to training neural networks use a blur kernel to generate training input images from source images for training, resulting in images that poorly represent motion blur. Thus, neural networks trained using these images produce low-quality output images.